//#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//#include<math.h>
//int main()
//{
//    int n;
//    scanf("%d", &n);
//    long long arr[1001];
//    long long c[1001] = { 0 };
//    for (int i = n; i < 1001; i++) {
//        c[i] = 1;
//    }
//    for (int i = 0; i < n; i++) {
//        scanf("%lld", &arr[i]);
//    }
//    for (int i = 1; i < n-1; i++) {
//        c[abs(arr[i] - arr[i + 1])] = 1;
//    }   
//    for (int i = 1; i < n; i++) {
//        if (c[i] == 0)
//        {
//            printf("Not jolly");
//            return 0;
//        }
//    }
//    printf("Jolly");
//    return 0;
//}
//#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//#include<math.h>
//int main()
//{
//    long long n, b;
//    scanf("%lld %lld", &n, &b);
//    long long h[20001];
//    for (int i = 0; i < n; i++) {
//        scanf("%lld", &h[i]);
//    }
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < n - i - 1; j++) {
//            if (h[j] < h[j + 1])
//            {
//                long long z = h[j];
//                h[j] = h[j + 1];
//                h[j + 1] = z;
//            }
//        }
//    }
//    long long sum = 0;
//    for (int i = 0; i < n; i++) {
//        sum += h[i];
//        if (sum >= b) {
//            printf("%d", i + 1);
//            return 0;
//        }
//    }
//    return 0;
//}
//#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//#include<math.h>
//int main()
//{
//    long long n;
//    scanf("%lld", &n);
//    long long h[20001];
//    for (int i = 0; i < n; i++) {
//        scanf("%lld", &h[i]);
//    }
//    int k = 0;
//    for (int i = 0; i < n; i++) {
//        for (int j = 0; j < n - i - 1; j++) {
//            if (h[j] > h[j + 1])
//            {
//                long long z = h[j];
//                h[j] = h[j + 1];
//                h[j + 1] = z;
//                k++;
//            }
//            
//        }
//    }
//    printf("%d", k);
//    return 0;
//}

//#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//#include<math.h>
//int main()
//{
//    long long n;
//    scanf("%lld", &n);
//    long long sum = 0;
//    long long a[40001];
//    for (int i=0;i<n;i++) {
//        scanf("%lld", &a[i]);
//    }
//    qsort(a, n, 8, sort);
//    for (int i = 0; i < n; i++) {
//        sum +=abs(a[i] - a[n / 2]);
//    }
//    printf("%lld", sum);
//    return 0;
//}
long long sort(const void* e1, const void* e2) {
    return *(long long*)e2 - *(long long*)e1;
}
struct jian {
    long long g, f;
};
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<math.h>
int main()
{
    long long n;
    scanf("%lld", &n);
    struct jian s[10000];
    for (int i = 0; i < n; i++) {
        scanf("%lld %lld", &s[i].g, &s[i].f);
    }
    qsort(s, n, sizeof(struct jian), sort);
    for (int i = 0; i <n; i++) {
        printf("%lld %lld\n", s[i].g, s[i].f);
    }
    int count = 0;
    long long  maxn=0;
    for (int i = n-1; i >=0; i--) {
        if (s[i].f > maxn) {
            count++;
            maxn = s[i].f;
        }
    }
    printf("%d", count);
    return 0;
}